package visualcbir.util;

import java.awt.Component;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.text.Normalizer;
import javax.swing.JOptionPane;
import java.util.Date;

/**
 * Utilidades para diminuir o código ou trabalho de tarefas frequentes.
 * @author sheila.caceres
 */
public class GeneralUtils {

    public static void showDialog(Component parent,  String mensagem, String tituloDlg, int tipoMsg){
        JOptionPane.showMessageDialog(parent,mensagem, tituloDlg, tipoMsg);
    }

    public static void showDlgInformation(Component parent,  String mensagem){
        JOptionPane.showMessageDialog(parent,mensagem, "Aviso", JOptionPane.INFORMATION_MESSAGE);
    }

    public static void showDlgError(Component parent,  String mensagem){
        JOptionPane.showMessageDialog(parent,mensagem, "Error", JOptionPane.ERROR_MESSAGE);
    }

    public static void showDlgQuestion(Component parent,  String mensagem){
        JOptionPane.showMessageDialog(parent,mensagem, "Pergunta", JOptionPane.QUESTION_MESSAGE);
    }
    
    public static String getTimeStamp(){
        return new Date().toString().replaceAll(":", "-");
    }

    public static void gravarArquivo(String nomeArquivo, String texto) throws IOException {
	FileOutputStream file = new FileOutputStream(nomeArquivo, false);

        String charset = "UTF-8";
        PrintWriter out = new PrintWriter (new OutputStreamWriter(file, charset));
//	PrintWriter out = new PrintWriter(file);

	out.println(texto);
	out.flush();
	out.close();
    }

     /**
     * Lê o texto de um arquivo
     * @return StringBuffer contendo o texto do arquivo.
     * @throws IOException
     */
    public static StringBuffer getArquivoModelo(String path) throws IOException {
        StringBuffer stringBuffer = new StringBuffer();
        // Abre arquivo.
        FileReader leitor = new FileReader(new File(path));
        BufferedReader reader = new BufferedReader(leitor);
        // Lê arquivo.
        try {
            String linha;
            boolean primeiraLinha = true;

            while ((linha = reader.readLine()) != null) {
                // Se nao for a primeira linha, coloca \n
                if (!primeiraLinha) {
                    stringBuffer.append("\n");
                } else {
                    primeiraLinha = false;
                }

                stringBuffer.append(linha);
                
            }
        } finally {
            reader.close();
            return stringBuffer;
        }
    }

    public static String wordsToLowerCase(String str){
        if((str == null) || (str.isEmpty())){return "";}
        String[] words = str.split("\\s");
        String newStr = "";
        for(int i=0; i<words.length; i++){
            newStr = newStr.concat(String.valueOf(Character.toUpperCase(words[i].charAt(0))));
            newStr = newStr.concat(words[i].substring(1));
        }
        return newStr;
    }

    public static String removerAcentos(String str){
        String newStr = Normalizer.normalize(str, Normalizer.Form.NFD);
        newStr = newStr.replaceAll("[^\\p{ASCII}]", "");
        return newStr;
    }
}
